Resolve "Toggle Free Look with Hotkey"
[ryzomcore.git] / ryzom / server / src / patchman_service / server control module notes.txt
blobc3a36cf759b5d5ed5ac0648b9d115cd44bbcde06
1 notes:
2 ------
4 test strategy...
5 1. on module up ... do the guys see eachother
6 2. file transfer in single block
7 3. File transfer as multi-part
8 4. Multi part transfer with more blocks than max block count
9 5. file data failure
10 6. complete breakpoint coverage
11 7. treat case where a file exeists and is then deleted, making it inaccessible -> needs to be handled cleanly by readError()
14 Todo:
15 - repository needs to be proactive relative to downloaders - needs to broadcast its updates
18 ** Olivier - allow FES to try several addresses and to select one that they succeed in opening...
19 ** this will allow us to have a single FES cfg used many times
21 ** note nllog.h is in game_share
22 ** backup modules are in game shre
24 AMS
25         - add delta() system + upload in 2 steps
26         - test generated screen file
27         - test aes cfg file
28         - update the database directly
30         DAM - domain admin module
31         - get the domain description out of the database
32         - interface for ATM
33                 - status / variables
34         - interface for AEM
36         AEM - admin executor module
37         - singleton for holding running service threads
38         - the running service thread (launch, stop, etc)
39         - api for singleton for use by AEM module
40         - interface for ATM
41         - interface for DAM
42         - interface for SPA
43                 - msg to download new database script file
44                 - msg to request transmit of script files
46         ATM - admin terminal module
47         - interface for DAM
48                 - status / variables of services
50 PATCHMAN
51         SPT
52         - add 'spa_list'
53         - add 'spa_get' and 'spa_put' commands for sending / retrieving files
54         - add 'spa_exec' command to execute a command on a remote spa module
55         - display summary messages for the different dommains saying which proportion of machines are ready to go, which are up, etc
57         PATCH_GEN
58         - generate patches with delta / ref management
59         - introduce weekly auto ref update / directory change
60         - update minver for re / rr to be a 4 week old version
61         - send a broadcast of some kind to spm* to set 'daily' (or other) install patch version to latest patch version
62         - synchronise client and server patch generation
63         - move server patches onto a different machine
64         => when 'daily' latest number is incremented, the server and client patch gen need to update themselves
65         => need to ensure that the process of assembling file set for patch generation is serialised (and not parellelised) with patch make
68 ------------------------
69 A Simple example module
70 ------------------------
72 /** \file spt_server_patch_terminal.cpp
73  *
74  *
75  */
77 //-----------------------------------------------------------------------------
78 // includes
79 //-----------------------------------------------------------------------------
81 // nel
82 #include "nel/net/module.h"
83 #include "nel/net/module_builder_parts.h"
84 #include "nel/net/module_manager.h"
86 // game share
87 #include "game_share/utils.h"
89 // local
90 #include "spt_module_itf.h"
93 //-------------------------------------------------------------------------------------------------
94 // namespaces
95 //-------------------------------------------------------------------------------------------------
97 using namespace std;
98 using namespace NLMISC;
99 using namespace NLNET;
100 using namespace PATCHMAN;
103 //-----------------------------------------------------------------------------
104 // class CServerPatchTerminal
105 //-----------------------------------------------------------------------------
107 class CServerPatchTerminal:
108         public CEmptyModuleServiceBehav<CEmptyModuleCommBehav<CEmptySocketBehav<CModuleBase> > >,
109         public CServerPatchTerminalSkel
111 public:
112         // IModule specialisation implementation
113         void initModule(const TParsedCommandLine &initInfo);
114         void onProcessModuleMessage(IModuleProxy *sender, const CMessage &msg);
116         void onModuleUp(IModuleProxy *module);
117         void onModuleDown(IModuleProxy *module);
119         const std::string &getModuleManifest() const;
121 private:
122         // private data
123         mutable NLMISC::CSString _Manifest;
125         // some macros for setting up the possiblity of having my own NLMISC_COMMAND scope
126         NLMISC_COMMAND_HANDLER_TABLE_EXTEND_BEGIN(CServerPatchTerminal, CModuleBase)
127                 NLMISC_COMMAND_HANDLER_ADD(CServerPatchTerminal, dump, "Dump the current emiter status", "no args")
128         NLMISC_COMMAND_HANDLER_TABLE_END
130         NLMISC_CLASS_COMMAND_DECL(dump);
134 //-----------------------------------------------------------------------------
135 // methods CServerPatchTerminal - basics
136 //-----------------------------------------------------------------------------
138 CServerPatchTerminal::CServerPatchTerminal()
142 void CServerPatchTerminal::onProcessModuleMessage(IModuleProxy *sender, const CMessage &msg)
144         if (CServerPatchTerminalSkel::onDispatchMessage(sender, msg))
145                 return;
147         // unhandled message....
149         BOMB("CServerPatchTerminal::onProcessModuleMessage : received unhandled message '"<<msg.getName()<<"'", return);
152         
153 void CServerPatchTerminal::initModule(const TParsedCommandLine &initInfo)
155         CModuleBase::initModule(initInfo);
156         nlinfo("SPM: Initialising");
159 const std::string &CServerPatchTerminal::getModuleManifest() const
161         _Manifest = "";
162         return _Manifest;
166 //-----------------------------------------------------------------------------
167 // CServerPatchTerminal message callbacks
168 //-----------------------------------------------------------------------------
171 //-----------------------------------------------------------------------------
172 // CServerPatchTerminal NLMISC_COMMANDs
173 //-----------------------------------------------------------------------------
175 NLMISC_CLASS_COMMAND_IMPL(CServerPatchTerminal, dump)
177         NLMISC_CLASS_COMMAND_CALL_BASE(CModuleBase, dump);
179         log.displayNL("%s",getName().c_str());
181         return true;
185 //-----------------------------------------------------------------------------
186 // CServerPatchTerminal registration
187 //-----------------------------------------------------------------------------
189 NLNET_REGISTER_MODULE_FACTORY(CServerPatchTerminal,"ServerPatchTerminal");